#ifndef ABMCOPA_H_
#define ABMCOPA_H_

#include "../Hash/Hash.h"
#include <fstream>
#include <cstring>
#include <vector>

using namespace std;

class ABMCopa {

private:

	string nArchivo;
	unsigned int tamanioBucket;
	Hash * hashCopa;

public:

	/* Crea un hash con el nombre de archivo y el tamanio de bucket
	 * pasados por parametro
	 * */
	ABMCopa(std::string nArchivo, unsigned int tamanioBucket);

	virtual ~ABMCopa();

	/* Si el id no existe, lo da de alta con los valores pasados por parametro ( id, el id
	 * del formador que posee, si es armado y si contiene aro) y
	 * devuelve true, sino devuelve false.
	 * */
	bool alta(unsigned int id, unsigned int idFormador, bool armado, bool aro);

	/* Si el id existe, modifica con los valores pasados por parametro y
	 * devuelve true, sino devuelve false
	 * */
	bool baja(unsigned int id);

	/* Si el id existe, modifica con los valores pasados por parametro y
	 * devuelve true, sino devuelve false
	 * */
	bool modificacion(unsigned int id, unsigned int idFormador, bool armado, bool aro);

	/*
	 * Si el id existe, devuelve string con los atributos separados por ;
	 * de la forma: id;idformador;armado;aro
	 * */
	string buscar(unsigned int id);

	/*
	 * Devuelve un vector con las entidades, <= al maximo id de la entidad, cada
	 * elemento del vector, tiene sus campos separados por ;
	 * id;idformador;armado;aro
	 * */
	vector<string>  listar(unsigned int maxid);
};

#endif
